/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package vetAdmin.dao.implementation;

//import com.tutorialjava.bd.ControladorBD;
import java.sql.Connection;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
import java.util.logging.Level;
import java.util.logging.Logger;
import vetAdmin.dao.ClienteDAO;

import java.util.ArrayList;
import java.util.Collection;
import java.util.Date;
import javax.swing.DefaultListModel;

import javax.swing.JOptionPane;

import vetAdmin.model.Cliente;
import vetAdmin.model.Paciente;

/**
 *
 * @author Gustavo
 */
public class PacienteDAOJDBC {


    public static DefaultListModel getPacientes(Connection conn, int id) throws SQLException {
        String laConsulta = "SELECT * FROM pacientes WHERE id_cliente="+id;

        Statement stmtConsulta = conn.createStatement();
        ResultSet rs = stmtConsulta.executeQuery(laConsulta);


        Paciente pacienteAux;
        DefaultListModel aux=new DefaultListModel();

        while (rs.next()){
            pacienteAux=new Paciente();
            pacienteAux.setId(rs.getInt("id_paciente"));
            pacienteAux.setNombre(rs.getString("nombre"));
            pacienteAux.setEspecie(rs.getInt("id_especie"));
            pacienteAux.setEdad(rs.getString("edad"));
            pacienteAux.setFechaAlta(rs.getString("fecha_alta"));
            pacienteAux.setFechaNacimiento(rs.getString("fecha_nac"));
            pacienteAux.setFechaUltimaVisita(rs.getString("fecha_ultima"));
            pacienteAux.setIdPropietario(rs.getInt("id_cliente"));
            pacienteAux.setMicrochip(rs.getString("microchip"));
            pacienteAux.setPelaje(rs.getString("pelaje"));
            pacienteAux.setRaza(rs.getInt("id_raza"));
            pacienteAux.setSexo(rs.getInt("id_sexo"));

            aux.addElement(pacienteAux);

        }
        // Cierra el Statement y la Connection
        stmtConsulta.close();
        conn.close();
        return aux;
    }


    public void modificar(Connection conn, Paciente p)throws Exception {
        //conn = AdministradorDeConexiones.getConnection();

        // Arma la sentencia de actualización y la ejecuta
        //String laActualizacion = "UPDATE clientes SET nombre='"+getNombre()+"', ve_apellido='"+getApellido()+"', ve_dni='"+getNumeroDocumento()+"', ve_vendidos="+String.valueOf(getCantAutosVendidos())+" WHERE ve_id="+getId();

        String laActualizacion = "UPDATE pacientes SET id_cliente="+p.getIdPropietario()+",nombre='"+p.getNombre()+"',id_especie="+p.getEspecie()+",id_raza="+p.getRaza()+",pelaje='"+p.getPelaje()+"',id_sexo="+p.getSexo()+",fecha_nac='"+p.getFechaNacimiento()+"',edad='"+p.getEdad()+"',fecha_alta='"+p.getFechaAlta()+"',fecha_ultima='"+p.getFechaUltimaVisita()+"',microchip='"+p.getMicrochip()+"' WHERE id_paciente="+p.getId()+";";
        System.out.println(laActualizacion);
        Statement stmtActualizacion = conn.createStatement();
        stmtActualizacion.execute(laActualizacion);

        // Cierra el Statement y la Connection
        stmtActualizacion.close();
        conn.close();

        // Informa que la actualización ha sido realizada con éxito
        System.out.println("La actualización ha sido realizada con éxito...");
    }

    public void eliminar(Connection conn, Paciente p)throws Exception {
        String laEliminacion = "DELETE FROM pacientes WHERE ve_id ="+p.getId();
        Statement stmtEliminacion = conn.createStatement();
        stmtEliminacion.execute(laEliminacion);

        // Cierra el Statement y la Connection
        stmtEliminacion.close();
        conn.close();

        // Informa que la eliminación ha sido realizada con éxito
        System.out.println("La eliminación ha sido realizada con éxito...");
    }


    public void insertar(Connection conn, Paciente p)throws Exception{
        //conn = AdministradorDeConexiones.getConnection();

        // Arma la sentencia de inserción y la ejecuta
        String laInsercion ="INSERT INTO pacientes(id_cliente, nombre, id_especie, id_raza, pelaje, id_sexo, fecha_nac, edad, fecha_alta, fecha_ultima, microchip) "
                + "VALUES ("+p.getIdPropietario()+",'"+p.getNombre()+"',"+p.getEspecie()+","+p.getRaza()+",'"+p.getPelaje()+"',"+p.getSexo()+",'"+p.getFechaNacimiento()+"','"+p.getEdad()+"','"+p.getFechaAlta()+"','"+p.getFechaUltimaVisita()+"','"+p.getMicrochip()+"');";
        System.out.println(laInsercion);
        Statement stmtInsercion = conn.createStatement();
        stmtInsercion.execute(laInsercion);

        // Cierra el Statement y la Connection
        stmtInsercion.close();
        conn.close();

        // Informa que la inserción ha sido realizada con éxito
        System.out.println("La inserción ha sido realizada con éxito...");

    }

    public static DefaultListModel buscarPorNombre(Connection conn, String nombre )throws Exception{
        String laBusqueda = "SELECT * FROM veterinaria.pacientes WHERE nombre like '"+nombre+"%';";
        System.out.println(laBusqueda);
        Statement stmtBusqueda = conn.createStatement();

        ResultSet rs = stmtBusqueda.executeQuery(laBusqueda);        
        Paciente pacienteAux;
        DefaultListModel aux=new DefaultListModel();

        while (rs.next()){
            pacienteAux=new Paciente();
            pacienteAux.setId(rs.getInt("id_paciente"));
            pacienteAux.setNombre(rs.getString("nombre"));
            pacienteAux.setEspecie(rs.getInt("id_especie"));
            pacienteAux.setEdad(rs.getString("edad"));
            pacienteAux.setFechaAlta(rs.getString("fecha_alta"));
            pacienteAux.setFechaNacimiento(rs.getString("fecha_nac"));
            pacienteAux.setFechaUltimaVisita(rs.getString("fecha_ultima"));
            pacienteAux.setIdPropietario(rs.getInt("id_cliente"));
            pacienteAux.setMicrochip(rs.getString("microchip"));
            pacienteAux.setPelaje(rs.getString("pelaje"));
            pacienteAux.setRaza(rs.getInt("id_raza"));
            pacienteAux.setSexo(rs.getInt("id_sexo"));

            aux.addElement(pacienteAux);

        }
        // Cierra el Statement y la Connection
        stmtBusqueda.close();
        conn.close();

        // Informa que la inserción ha sido realizada con éxito
        System.out.println("La busqueda ha sido realizada con éxito...");
        
        
        return aux;        
    }
}
